REPRESENTACIÓN DEL
CONOCIMIENTO DE
SENTIDO COMÚN

“El sentido común (sensus communis) es el corazón donde toda la información de los diferentes sentidos se unen en un todo inteligible” (Aristóteles)

“El buen sentido es la cosa mejor repartida del mundo” (Descartes)

“El sentido común es un instinto de la verdad” (Max Jacob)



¿Qué es el Sentido Común?

Las opiniones

Existen diferentes opiniones o visiones sobre el sentido común:
Características

El sentido común presenta las siguientes características:
El Problema del Conocimiento de Sentido Común en Inteligencia Artificial

Uno de los grandes problemas de la IA es el de la representación y gestión del conocimiento de sentido común, pues para que un sistema pueda interrelacionar con la realidad, es necesario un razonamiento eficaz en la toma de decisiones. Para que las máquinas sean inteligentes, deben ser capaces de reconocer cosas y relaciones que son evidentes para nosotros

Es paradójico, pues el conocimiento de sentido común se supone que es el más básico y, a la vez, es el más difícil de implementar en sistemas de IA. Se ha demostrado que es más difícil crear sistemas capaces de razonamiento de sentido común que sistemas capaces de resolver problemas de razonamiento en dominios específicos como un sistema experto de diagnóstico médico o un sistema que juegue al ajedrez. Las razones de esta dificultad son: Para Marvin Minsky [2000], pedir que un programa de ordenador entienda cosas de sentido común, es casi equivalente a pedir que la máquina piense.

Construir un sistema capaz de razonar con sentido común, como los humanos, fue durante cierto tiempo, el objetivo principal de la IA. Pero, hoy día, la mayoría de los investigadores han renunciado a ese ambicioso proyecto, centrándose solo en clases específicas de problemas. En este aspecto, los progresos en IA en los últimos años han estado limitados a dominios particulares: juegos (como ajedrez, damas y backgammon), diagnóstico médico, gestión de redes, etc. Pero para conseguir una verdadera IA, una IA de tipo general, es necesario incorporar el conocimiento de sentido común de los humanos en las máquinas, pues los humanos son capaces de pensar en muchos y diferentes dominios.

Los investigadores de IA han bautizado el conocimiento de sentido común como “conocimiento ingenuo”. Este tipo de conocimiento aparece en numerosas disciplinas. Se puede hablar, por lo tanto, de física ingenua, economía ingenua, psicología ingenua, matemática ingenua, etc.


Las razones para implantar sentido común en las máquinas

Hay varias razones por las que en la IA pone énfasis en el conocimiento de sentido común en lugar de conocimiento específico, experto o científico:
Estrategias de implantación del sentido común

Hay básicamente tres estrategias de implantación del sentido común en IA:
  1. Elaborar un modelo teórico, de tipo general, de la realidad para que el sistema sea capaz de interactuar inteligentemente con el mundo exterior en toda clase de situaciones particulares. Los partidarios de esta alternativa se denominan “fundamentalistas”. Este modelo debe: a) razonar con conocimiento por defecto; b) razonar de forma genérica, es decir, que afecte a un amplio rango de dominios; c) tolerar incertidumbre en el conocimiento; d) tomar decisiones con conocimiento incompleto y revisar sus decisiones cuando se tenga mayor conocimiento o conocimiento completo; e) utilizar meta-conocimiento; f) detectar inconsistencias en el conocimiento (por ejemplo, que Newton no puede tener número de teléfono, o que una persona de 30 años no puede pesar 3 Kgr.).

  2. Hacer un inventario, lo más exhaustivo posible, de conocimientos particulares de sentido común para utilizarlo con fines prácticos. Los partidarios de esta opción se denominan “Cyclistas”, por ser el sistema Cyc (que se describe más adelante) el paradigma de esta alternativa.

  3. Olvidarse de lograr un conocimiento completo de sentido común, sea teórico o práctico, y centrarse exclusivamente en elaborar soluciones para cada sistema particular.
Entre estas alternativas, la mejor es la primera: un modelo de la realidad que pueda ser interiorizado por el sistema. Sin embargo, por no existir actualmente tal modelo, la opción más común ha sido la tercera: centrarse en resolver pequeños problemas, como el tema del mundo de los bloques y problemas particulares de dominios específicos. El resultado ha sido un gran número de modelos dispersos, desconectados entre sí.


El problema del lenguaje

Lo primero que se necesita para representar el conocimiento de sentido común, sea genérico o específico, es elegir un lenguaje de representación. El problema es que los lenguajes existentes no parecen los más adecuados para esta tarea. Normalmente se utiliza como base la lógica de predicados de primer orden, que se suele ampliar para intentar conseguir un lenguaje potente y expresivo. Las ampliaciones se realizan utilizando otras lógicas no-clásicas como: lógica por defecto (default logic), no-monótona, temporal, espacial, del conocimiento, de la creencia, de la obligación, de la intención, etc. También se utilizan los formalismos clásicos de representación del conocimiento: marcos, guiones, programación lógica, programación orientada a objetos, etc.

El problema es que, cuando se elige un determinado formalismo, nos estamos restringiendo a un solo paradigma. El paradigma elegido puede funcionar en ciertos dominios, pero ninguno es aplicable a todos. Lo que se suele hacer es usar diferentes lenguajes de representación para cada tipo de conocimiento de sentido común. Pero estos lenguajes no están conectados, son independientes. Estamos en la misma situación que con los paradigmas de programación.

Lo ideal es que hubiera un lenguaje unificado, con un paradigma universal, capaz de expresar todos los paradigmas particulares:
Programas con sentido común, según McCarthy

John McCarthy [1958] −el acuñador del término “Inteligencia Artificial”− fue el primero en comprender la importancia del conocimiento de sentido común en IA. Para él, el razonamiento de sentido común es la clave de la IA:
El proyecto Cyc

El intento más ambicioso de implementación del sentido común fue el sistema Cyc (abreviatura de “encyclopedia”), un proyecto liderado por Douglas Lenat [Lenat & Guha, 1990; Lenat, 1995]. Se trata de un proyecto de creación de una gran base de conocimientos orientados a facilitar el razonamiento humano de sentido común.

Lenat decía que le gustaría encontrar “las leyes de Maxwell el pensamiento”. Pero no creía en la existencia de unos primeros principios o primitivas semánticas en IA

El proyecto se inició en 1984, llegando a contemplar 100.000 conceptos y un millón de reglas o inferencias. Cyc se escribió en el lenguaje CycL, una versión ampliada de la lógica de predicados de primer orden, un lenguaje que contempla marcos, mecanismos de inferencia y mecanismos de restricciones para verificar la consistencia de los conocimientos.

Características: Cyc, aunque ha sido útil en algunos casos particulares, no se ha encontrado ninguna forma genérica y efectiva de explotar todo su conocimiento acumulado. Actualmente el proyecto se considera fallido por tres razones:
  1. Porque los conocimientos aislados a veces no son suficientes, necesitan un contexto.

  2. Por el lenguaje (CycL), que es complejo, poco directo y no suficientemente genérico.

  3. Porque CycL implementa muchos mecanismos inferenciales especializados (soporta unos 20 tipos de mecanismos de inferencia), pero sin una unidad subyacente, sin expresiones generales. Se ha abordado principalmente desde el punto de vista particular y superficial. Un sistema de conocimiento de sentido común debe basarse en conocimientos genéricos y no en multitud de conocimientos particulares. Hay que fundamentar todo en lo universal, en lo profundo, a partir de unos conceptos iniciales, primitivos o universales y de ahí ir derivando nuevos conceptos y las relaciones entre ellos. Lo específico debe ser siempre manifestación de lo genérico.

    Durante un tiempo, el equipo Cyc necesitó definir categorías que parecían no tener fin. Pero en 1987, Cyc llegó a una fase que Lenat denominó “convergencia semántica”: los nuevos conceptos se podían definir a partir de los anteriores, pero no lo hicieron generalizando expresiones, sino simplemente copiando un conocimiento parecido y modificándolo ligeramente para conseguir el nuevo conocimiento.

Formalismos para Representación del Conocimiento de Sentido Común

Se han propuesto un gran número de modelos o formalismos para representar el conocimiento de sentido común para interactuar con el mundo real, un mundo esencialmente dinámico en el que se realizan acciones y se producen eventos que modifican el estado o situación del mundo a lo largo del tiempo. Estos modelos son de la denominada “física cualitativa”, que tratan de ontologías físicas o de sentido común a nivel físico: a nivel espacial, temporal y material. La física cualitativa solo considera propiedades esenciales, prescinde de las irrelevantes y permite inferir tendencias generales sin necesidad de realizar cálculos exactos. La formalización del sentido común de la física cualitativa debe distinguirse de los modelos matemáticos, precisos, cuantitativos, de la física tradicional o cuantitativa. Los formalismos más conocidos son los que se detallan a continuación.


Cálculo de situaciones (situation calculus)

McCarthy & Hayes [1969] presentaron el “cálculo de situaciones”, un intento de formalizar el razonamiento de sentido común en dominios dinámicos. Utilizaron para ello la lógica de predicados de primer orden. Se basa en dos conceptos:
  1. Situación. Es una instantánea del mundo en un momento dado o instante t. Es equivalente a estado global o estado completo del mundo.

  2. Acción. Es el medio que transforma una situación en otra. Las acciones establecen relaciones temporales entre estados.
Características: Un ejemplo, en el mundo de los bloques. Tenemos dos bloques, A y B, sobre una mesa, y un robot que puede coger o depositar un bloque cada vez.

Podemos representar las 5 situaciones posibles mediante predicados. El predicado libre(x) indica que sobre el bloque x no hay nada. El predicado sobre(x, y) indica que el bloque x está sobre el bloque y.
  1. {libre(A), libre(B)} (los dos bloques están sobre la mesa)
  2. {libre(A)} (el bloque A está solo sobre la mesa)
  3. {libre(B)} (el bloque B está solo sobre la mesa)
  4. {sobre(A, B)} (el bloque A está sobre B)
  5. {sobre(B, A)} (el bloque B está sobre A)
Como siempre hay dos bloques, si un bloque no está en la mesa es porque lo tiene cogido el robot. Como el robot solo puede coger un bloque, la mesa nunca puede estar vacía.

Las acciones posibles las vamos a representar como: coger(x) indica coger el bloque x (puede estar sobre la mesa o sobre el otro bloque). Y poner(x, y) indica depositar el bloque x sobre y (puede ser la mesa o el otro bloque). Los axiomas que relacionan estas acciones con los estados son:

coger(A, {libre(A), libre(B)}) = {libre(B)})
coger(B, {libre(A), libre(B)}) = {libre(A)})
coger(A, {sobre(A, B)}) = {libre(B)}
coger(B, {sobre(B, A)}) = {libre(A)}
poner(B, A, {libre(A)}) = {sobre(B, A)}
poner(A, B, {libre(B)}) = {sobre(A, B)}
poner(A, mesa, {libre(B)}) = {libre(A), libre(B)}
poner(B, mesa, {libre(A)}) = {libre(A), libre(B)}

Obsérvese que no existe, por ejemplo, el axioma coger(A,{libre(B)} porque si sobre la mesa solo está el bloque B, el robot tiene cogido el A y no puede volver a cogerlo.

Podemos pasar, por ejemplo, de la situación {sobre(A, B)} a {sobre(B, A)} mediante una secuencia de cuatro acciones: coger(A), poner(A, mesa), coger(B) y poner(B, A).


El cálculo de eventos (event calculus)

Propuesto por Robert Kowalski y Marck Sergot [1986], es un formalismo lógico −utiliza la lógica de predicados de primer orden− para representar el conocimiento de sentido común. En vez de considerar situaciones o estados globales, considera eventos y fluentes. Un evento produce un efecto local en una parte del mundo de manera independiente y sin afectar a las otras partes del mundo. Un fluente es algo que varía con el tiempo (un objeto, una propiedad, etc.). El cálculo de eventos fue formalizado como un conjunto de cláusulas de Horn: una serie de condiciones (C1 ... Cn) aumentadas con la posibilidad de la negación (condición contraria o no-condición) y una acción asociada A cuando se cumplen todas las condiciones. Este conjunto se podía ejecutar como un programa lógico en Prolog. En notación MENTAL: Kowalski contribuyó al desarrollo de la programación lógica, empezando por la interpretación procedural de las claúsulas de Horn [Kowalski, 1986].

El cálculo de eventos de Kowalski y Sergot es muy limitado. La generalización debería contemplar: eventos no determinísticos, concurrentes, de efectos retardados, de efectos graduales, no instantáneos (con duración) y eventos que se disparan automáticamente bajo ciertas condiciones. El cálculo de eventos fue ampliado por Rob Miller y Murray Shanahan [2002]. Otro formalismo fue propuesto por Erik Mueller [2009].


El cálculo de fluentes (fluent calculus)

El cálculo de fluentes [Thielscher, 1998] es un formalismo de de programación lógica e inspirada en la lógica ecuacional para razonamiento y planificación de acciones en dominios dinámicos. Hay 4 conceptos en el cálculo de fluentes:
  1. Fluentes. Un fluente es un componente atómico de un estado del sistema y que varía con el tiempo. Se representan como términos lógicos, más que como predicados.

  2. Estados. Un estado es una colección de fluentes. Es una instantánea de un mundo estable, es decir, que no está en transición. Un estado se obtiene concatenando fluentes con el operador diádico “o”, un operador tomado de la lógica ecuacional.

  3. Acciones. Son los medios (causas) que hacen cambiar el estado del mundo.

  4. Situaciones. Una situación es una secuencia de acciones.
Características: Comparación con el cálculo de situaciones:
MENTAL y la Representación del Conocimiento de Sentido Común

En primer lugar hay que decir que MENTAL es un lenguaje se sentido común porque es un conocimiento general sobre cómo está estructurado y cómo funciona el mundo. Es una especie de sexto sentido de tipo integrador que ve lo común o genérico en toda situación particular. Es decir, ve lo profundo en lo superficial, por lo que el sentido común está estrechamente relacionado con la conciencia.

La opinión general es que se necesitan múltiples métodos o técnicas de representación del conocimiento y múltiples formas de hacer inferencias, todas ellas basadas en la lógica formal. Pero esto no es cierto. Desde lo profundo hay unificación: solo es necesario un único lenguaje. Hasta ahora no había un lenguaje suficientemente genérico, potente, eficiente, y simple a la vez, que pudiera representar todo tipo de conocimiento, incluyendo el de sentido común. Este lenguaje es MENTAL, un lenguaje basado en arquetipos de la conciencia.

McCarthy intuyó que la clave de la IA residía en el conocimiento de sentido común. Pero realmente la clave de la IA reside en un nivel aún más profundo: en los arquetipos de la conciencia. La inteligencia es conectar lo superficial con lo profundo, lo general, y, en último término, con la conciencia, con lo universal. El límite reside en los arquetipos de la conciencia. La inteligencia, por lo tanto, no es diez millones de reglas, como afirma Lenat. La inteligencia es algo próximo a la conciencia: reside en la unión (vertical) de opuestos entre lo superficial y lo profundo, que permite relacionar los conocimientos superficiales (horizontales) a través de lo profundo.

Podemos distinguir tres niveles:
  1. Los arquetipos de la conciencia.

  2. Los conocimientos de sentido común, que se fundamentan en el nivel 1. Todos estos conocimientos están conectados a través de los arquetipos de la conciencia.

  3. Las aplicaciones de IA, que se fundamentan totalmente en el nivel 1 y parcialmente en el nivel 2, pues las aplicaciones no necesitan todo el conocimiento del nivel 2, sino solo los conocimientos generales y los específicos del dominio. De todas formas, hay sistemas de IA que no necesitan sentido común. Son sistemas muy específicos, que se enfrentan a situaciones muy concretas, como los programas de jugar al ajedrez o los sistemas de diagnóstico médico. Pero, en general, todo sistema de IA afecta a diferentes aspectos del conocimiento de sentido común.
Antes de empezar a representar el conocimiento de sentido común o cualquier tipo de conocimiento, necesitamos un conocimiento más esencial: el conocimiento de la estructura arquetípica y profunda, la estructura de la realidad interna y externa. Y este conocimiento arquetípico es MENTAL.

Las características de MENTAL como lenguaje unificado para representación del conocimiento de sentido común son:
Ejemplos prácticos
  1. Todos los perros tienen cuatro patas.

    ⟨( {x/perro → x/(NumPatas/4) )⟩

    o, con notación funcional:

    ⟨( {x/perro → (NumPatas(x) = 4) )⟩

  2. “Hoy” es temporalmente mayor que “Ayer”:

    ( tiempo(hoy) > tiempo(ayer) )

  3. Los padres son más viejos que los hijos.

    ⟨( (padre(x) = y) → (edad(x) > edad(y)) )⟩

  4. El aserto “Juan pidió una paella al camarero” se puede expresar mediante atributos (que son relaciones binarias). Es una relación que podemos expresar como un cierto evento e con la siguiente estructura de atributos:


    Y las siguientes inferencias:

    Juan/humano (Juan es humano)
    camarero/humano (el camarero es humano)
    peticion/oral (la petición fue oral)
    Juan/(edad ≥ (2*años)) la edad de Juan es al menos de 2 años)
    camarero/adulto (el camarero es un adulto)
    lugar/Restaurante (el encuentro tuvo lugar en un restaurante)
    Juan/(cliente(Restaurante)) (Juan es cliente del restaurante)
    {Juan Camarero}/Próximos (Juan y el camarero estaban espacialmente próximos)
    (idioma(Juan) = idioma(camarero)) (Juan y el camarero hablaban el mismo idioma)

    Se puede expresar también la probabilidad o grado de certeza de que el restaurante estuviera en España, aplicando un factor (por ejemplo, 0.9) a la expresión correspondiente:

    Restaurante/(0.9*(lugar/España))


Adenda

Open Mind Common Sense Project

Es un proyecto del Media Lab del MIT [Singh et al, 2002]. Es parecido a Cyc, pero tiene la particularidad de que es abierto. Cualquier persona puede registrarse en la Web y añadir conocimientos o valorar los ya existentes. Todo el conocimiento adquirido se integra en Concept.Net, una red semántica de conocimientos de sentido común que permite realizar inferencias. Es la mayor fuente de recursos mecanizados de conocimientos de sentido común y está disponible libremente (www.conceptnet.org). Los nodos representan conceptos en forma de fragmentos (palabras o frases cortas) del lenguaje natural. Las flechas entre nodos son las relaciones entre los conceptos. Está disponible una API pública para que las aplicaciones de los usuarios puedan acceder a su contenido. Consta de más de 700.000 elementos de conocimiento de sentido común, resultado de las contribuciones de más de 14.000 personas de todo el mundo.


Cyc Foundation

La Cyc Foundation (www.cycfoundation.org) es una organización sin ánimo de lucro que mantiene la ontología OpenCyc, una base de conocimientos derivada de la base de conocimientos de Cyc, para la Web Semántica.


Bibliografía